package com.zyr.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.zyr.constraint.JwtConstants;

import java.time.Instant;
import java.util.Map;

/**
 * @author 张雨润
 * @date 2024/7/26 上午11:20
 * @Description
 */
public class JwtUtils {
    /**
     * 生成JWT令牌token
     * @param map
     * @return
     */
    public static String generateToken(Map<String,String> map){
    //     获取当前时间，并设置令牌过期时间
        Instant expireTime = Instant.now().plusSeconds(JwtConstants.JWT_EXPIRATION);
        //     创建JWT构建器
        JWTCreator.Builder builder = JWT.create();
        map.forEach(builder::withClaim);
        String token=null;
        // 生成的token = 令牌头.令牌主体.签名
        token = builder.withIssuer(JwtConstants.JWT_ISSUER).withExpiresAt(expireTime).sign(Algorithm.HMAC256(JwtConstants.JWT_SECRET));
        return token;
    }

    /**
     * 加密认证对比
     * @param token
     * @return
     */
    public static boolean verify(String token){
        try{
            // 加密比对
            JWT.require(Algorithm.HMAC256(JwtConstants.JWT_SECRET)).build().verify(token);
        }catch (Exception e){
            return false;
        }
        return true;
    }
}
